Electronic devices such as mobile phones and personal digital assistants (PDA's) contain firmware and application software that are provided by the manufacturers of the electronic devices, by telecommunication carriers, or by third parties. This firmware and application software often contains software errors or “bugs”. In addition, software developers may add new features over the life of the software. Therefore, new versions of the firmware and software are periodically released to fix the bugs, to introduce new features, or both.
The process of updating such a device is relatively complex, and there are many potential sources of interruption of the update process. These include exhaustion of the battery operating the device, loss of the communication link used for the update, and interruption by outgoing or incoming calls. If the firmware/software of a mobile handset is updated and the mobile handset becomes inoperative, the user is likely to lose the use of the device for a period of time, may be required to return the device to a service center, and will most likely be very disappointed with the service that disseminated the associated firmware/software update. For these reasons, the process of providing firmware/software updates to mobile handsets needs to be fault-tolerant. Unfortunately, these devices are constrained in many ways, and achieving fault-tolerant update behavior is not easy, requiring great care in the design and management of the related activities.
Further limitations and disadvantages of conventional and traditional approaches will become apparent to one of ordinary skill in the art through comparison of such systems with the present invention as set forth in the remainder of the present application with reference to the drawings.